543 words
基础作业使用 LMDeploy 以本地对话、网页Gradio、API服务中的一种方式部署 InternLM-Chat-7B 模型,生成 300 字的小故事(需截图) 1 环境配置 设置开发机 创建虚拟环境 12bashconda create -n Lmdeploy --clone /share/conda_envs/internlm-base 然后使用以下命令激活环境 1conda activate Lmdeploy 下载imdeploy 123pip install packagingpip install /root/share/wheels/flash_attn-2.4.2+cu118torch2.0cxx11abiTRUE-cp310-cp310-linux_x86_64.whlpip install 'lmdeploy[all]==v0.1.0' 2 服务部署模型转换离线转换:指定模型名称、模型路径,转换为turbomind需要的格式 1lmdeploy convert internlm-chat-7b /root/share/temp/m...
1.5k words
基础作业 使用 OpenCompass 评测 InternLM2-Chat-7B 模型在 C-Eval 数据集上的性能安装 面向GPU的环境安装123456conda create --name opencompass --clone=/root/share/conda_envs/internlm-basesource activate opencompassgit clone https://github.com/open-compass/opencompasscd opencompasspip install -e . 数据准备123# 解压评测数据集到 data/ 处cp /share/temp/datasets/OpenCompassData-core-20231110.zip /root/opencompass/unzip OpenCompassData-core-20231110.zip 查看支持的数据集和模型12# 列出所有跟 internlm 及 ceval 相关的配置python tools/list_configs.py internlm ceval 启动...
966 words
Lecture6 OpenCompass大模型测评在Lecture6中,主要讲了三个部分:大模型评测的意义,OpenCompass工具介绍和OpenCompass实战。 一、为什么要进行模型的评测❓ 为什么要评测 LLM在不同场景中需要不同的评测方式。 为了避免对普通用户产生误导,我们需要一个公平的评测方法。 开发者可以通过评测了解模型的能力边界,并提升模型的质量。 在法律、医疗、社会安全等领域,我们需要一个好的评测方式来确定大模型是否适用于相关场景。 ❓ 需要测什么 传统NLP任务: 大语言模型:比如,知识,语言,理解,推理,长文本生成,Agent使用Tools的能力,情感认知,以及垂直领域的专业知识问答等领域。 ❓ 如何测评大语言模型 基座模型:在评测的时候要加一些prompt instruct 对话模型:通过人类对话的方式进行评测。 评测分为客观评测和主观评测。 客观评测:通过正则表达式提取回答,统计正确率(问答、多选、判断等)。 主观测评:针对于创作类的题目,用模型来评价模型。比如用GPT4作为裁判,代替人类对模型做出评价。 👉 大模型已有...
6.3k words
Lecture5 LMDeploy大模型量化部署实践 在Lecture5中,我们首先深入了解了大模型的特点,包括其庞大的规模以及在部署过程中面临的挑战。接着,我们详细学习了LMDeploy框架的三个核心功能,分别是轻量化、推理引擎TurboMind和服务。此外,我们还进行了实际的安装、部署和量化操作,以加深对这些概念的理解和应用。 课前的一些问题~ 什么是LMDeploy? LMDeploy是大语言模型在英伟达设备上部署的全流程方案。包括模型轻量化、推理和服务。(还没有涉及到移动端),项目地址 什么是量化?为什么要量化? 显存降低了,存储空间增多了,同样的设备下能够容纳更多,提高速度。 一、大模型部署背景 什么是模型部署? 定义:将训练好的模型,在特定的硬软件环境中启动运行起来,能够接收一定的输入并返回一定的输出。 需要考虑模型的压缩和硬件的加速 大模型特点: 消耗显存内存大:大模型的参数量很大;需要token by token,占用显存很大 动态shape:请求数不确定,token逐个生成且数量不定 结构简单:transformer结构,大部分是decoder-only ...
4.5k words
XTuner InternLM-Chat 个人小助手认知微调实践1.概述目标:通过微调,帮助模型了解对自己身份 方式:使用XTuner进行微调 2.实操2.1微调环境准备1沿用lesson4创建的xtuner0.1.9环境 2.2数据准备创建data文件夹用于存放用于训练的数据集 1mkdir -p /root/personal_assistant/data && cd /root/personal_assistant/data 在data目录下创建一个json文件personal_assistant.json作为本次微调所使用的数据集。json中内容可参考下方(复制粘贴n次做数据增广,数据量小无法有效微调,下面仅用于展示格式,下面也有生成脚本) 其中conversation表示一次对话的内容,input为输入,即用户会问的问题,output为输出,即想要模型回答的答案。 123456789101112131415161718[ { "conversation": [ { ...
2.1k words
https://leetcode.cn/problems/reverse-nodes-in-k-group/description/ 解答:1234567891011121314151617181920212223242526272829303132333435363738class Solution {protected: pair<ListNode*, ListNode*> _Reverse(ListNode* head, ListNode* tail) { ListNode* pre = nullptr; ListNode* cur = head; ListNode* nxt = nullptr; ListNode* right = tail->next; while (cur&&cur!=right) { nxt = cur->next; cur->next = pre; ...
2k words
https://leetcode.cn/problems/stone-game-vii/description/ 解答12345678910111213141516171819202122232425class Solution {public: int stoneGameVII(vector<int>& stones) { int n = stones.size(); vector<int> sum(n + 1); vector<vector<int>> memo(n, vector<int>(n, 0)); for (int i = 0; i < n; i++) { sum[i + 1] = sum[i] + stones[i]; } function<int(int, int)> dfs = [&](int i, int j) -&...
1.4k words
https://leetcode.cn/problems/minimum-seconds-to-equalize-a-circular-array/description/ 解答12345678910111213141516171819class Solution {public: int minimumSeconds(vector<int>& nums) { unordered_map<int, vector<int>> ump; for (int i = 0; i < nums.size();++i) { ump[nums[i]].push_back(i); } int res = nums.size(); for (auto& u : ump) { int mx = u.second[0] + nums.size() - u.second.back(...
2.9k words
https://leetcode.cn/problems/maximum-number-of-alloys/description/ 解答1234567891011121314151617181920212223242526272829303132class Solution {public: int maxNumberOfAlloys(int n, int k, int budget, vector<vector<int>>& composition, vector<int>& stock, vector<int>& cost) { int stock_max = 0; for (int i = 0; i < stock.size(); ++i) { stock_max = max(stock_max, stock[i]); } int left = 1, right = max...
1.8k words
题目https://leetcode.cn/problems/split-array-largest-sum/description/ 解答1234567891011121314151617181920class Solution {public: int splitArray(vector<int>& nums, int k) { int n = nums.size(); vector<vector<long long>> dp(n + 1, vector<long long>(k + 1, LLONG_MAX)); dp[0][0] = 0; vector<long long> sub(n+1, 0); for (int i = 0; i < n; ++i) { sub[i + 1] = sub[i] + nums[i]; } for (i...